﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

using SIMA.Client.Auxiliars.MVVM;
using SIMA.Core.Enums;
using SIMA.Core.Extension;
using SIMA.Entities;
using SIMA.Mvvm.Gestiones;

namespace SIMA.Client.Seguridad
{
    /// <summary>
    /// Lógica de interacción para frmAdminPerfil.xaml
    /// </summary>
    public partial class frmAdminPerfil : UserControl
    {
        //AdminPerfilMvvm mvvmAdminPerfil;
        MvvmGestionarPerfil mvvmAdminPerfil;
        public frmAdminPerfil()
        {
            InitializeComponent();
            Init();
        }

        #region Private Methods

        private void Init()
        {
            mvvmAdminPerfil = new MvvmGestionarPerfil();
            LayoutRoot.DataContext = mvvmAdminPerfil;
        }
        private void Clean()
        {
            txtDescripcionPerfil.Clear();
            txtNombrePerfil.Clear();
            cmbEstadoPerfil.SelectedItem = null;
            dgPerfil.SelectedItem = null;
        }

        private void btnGuardar_Click(object sender, RoutedEventArgs e)
        {
            if (dgPerfil.SelectedItem != null)
            {
                //Se hace update
                T_C_Perfil itemToUpdate = (dgPerfil.SelectedItem as T_C_Perfil);
                T_C_Perfil itemUpdated = (dgPerfil.SelectedItem as T_C_Perfil).Clone();
                itemUpdated.Descripcion = txtDescripcionPerfil.Text;
                itemUpdated.Nombre = txtNombrePerfil.Text;
                //itemUpdated.Id_Estado = (cmbEstadoPerfil.SelectedItem as T_C_Estado).Id_Estado;
                //this.mvvmAdminPerfil.Update(itemToUpdate, itemUpdated);
                Clean();
            }
            else
            {
                //Se crea un nuevo registro en la base de datos
                T_C_Perfil nuevoPerfil = new T_C_Perfil();
                nuevoPerfil.Nombre = txtNombrePerfil.Text;
                nuevoPerfil.Descripcion = txtDescripcionPerfil.Text;
                //nuevoPerfil.Id_Estado = (cmbEstadoPerfil.SelectedItem as T_C_Estado).Id_Estado;
                //this.mvvmAdminPerfil.Register(nuevoPerfil);
                Clean();
            }
        }

        private void btnEliminar_Click(object sender, RoutedEventArgs e)
        {
            //this.mvvmAdminPerfil.Delete(dgPerfil.SelectedItem as T_C_Perfil);
            Clean();
        }

        private void btmCancelar_Click(object sender, RoutedEventArgs e)
        {
            Clean();
        }

        #endregion

        private void cmbEstadoPerfil_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {

        }

        private void dgPerfil_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (dgPerfil.SelectedItem != null)
            {
                T_C_Perfil tipPer = (T_C_Perfil)dgPerfil.SelectedItem;
                txtNombrePerfil.Text = tipPer.Nombre;
                txtDescripcionPerfil.Text = tipPer.Descripcion;
                //cmbEstadoPerfil.SelectedItem = ((List<T_C_Estado>)cmbEstadoPerfil.ItemsSource).Where(es => es.Id_Estado == tipPer.Id_Estado).First();
            }
        }

        private void cmbFiltroPorEstado_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            T_C_Estado estado = (T_C_Estado)cmbFiltroPorEstado.SelectedItem;
            switch (estado.Nombre_Estado)
            {
                case "Activo":
                    this.mvvmAdminPerfil.Filtro = FilterType.Active;
                    break;
                case "Inactivo":
                    this.mvvmAdminPerfil.Filtro = FilterType.Inactive;
                    break;
            }
        }
    }
}
